var MIN_YEAR = 2000;        // min year
var MAX_YEAR = 2100;        // max year
var FIRST_DAY_OF_WEEK = 1;  // it meens that week begins from Monday

// This function gets called when the end-user clicks on some date.
function selected(cal, date)
{
   // just update the date in the input field.
  cal.sel.value = date;
  // if we add this call we close the calendar on single-click.
  if (cal.dateClicked)
  {
    cal.callCloseHandler();
  }
}

// And this gets called when the end-user clicks on the _selected_ date,
// or clicks on the "Close" button.  It just hides the calendar without
// destroying it.
function closeHandler(cal)
{
  cal.hide();
  //cal.destroy();
  _dynarch_popupCalendar = null;
}

// This function shows the calendar under the element having the given id.
// It takes care of catching "mousedown" signals on document and hiding the
// calendar if the click was outside.
function showCalendar(id, format)
{
  var el = document.getElementById(id);
  if (_dynarch_popupCalendar != null)
  {
    // we already have some calendar created
    _dynarch_popupCalendar.hide(); // so we hide it first.
  }
  else
  {
    // first-time call, create the calendar.
    var cal = new Calendar(FIRST_DAY_OF_WEEK, null, selected, closeHandler);

    // specific settings
    cal.weekNumbers = false;
    cal.showsOtherMonths = true;

    _dynarch_popupCalendar = cal;            // remember it in the global var
    cal.setRange(MIN_YEAR, MAX_YEAR);        // min/max year allowed.
    cal.create();
  }
  _dynarch_popupCalendar.setDateFormat(format);    // set the specified date format
  _dynarch_popupCalendar.parseDate(el.value);      // try to parse the text in field
  _dynarch_popupCalendar.sel = el;                 // inform it what input field we use

  _dynarch_popupCalendar.showAtElement(el, "Br");  // show the calendar

  return false;
}
